package technical;

import exceptions.ExFileException;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 *
 * @author Tania M
 * @version 1.0
 */
public class ModifyFileContent {

    /**
     *
     * @param adresse_fichier
     * @param uneLigne
     * @throws IOException
     * @throws ExFileException
     */
    public void writeEndFile(String adresse_fichier, String uneLigne) throws IOException, ExFileException {
        FileWriter writer = null;
        BufferedWriter bufferedWriter = null;
        
        try {
            writer = new FileWriter(adresse_fichier, true); //true pour ajouter au fichier
            bufferedWriter = new BufferedWriter(writer);
            bufferedWriter.write(uneLigne);
            bufferedWriter.newLine();
        } catch (IOException ex) {
        } finally {
            if (writer != null) {
                try {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                } catch (IOException ex) {
                    throw new ExFileException(ex.getMessage());
                }
            }
        }
    }
    
    public void writeLineEndFile(String adresse_fichier, String uneLigne) throws IOException, ExFileException {
        
        FileWriter writer = null;
        BufferedWriter bufferedWriter = null;

        try {
            writer = new FileWriter(adresse_fichier, true); //true pour ajouter au fichier
            bufferedWriter = new BufferedWriter(writer);
            bufferedWriter.write(uneLigne);
            bufferedWriter.newLine();
            //writer.write(uneLigne, 0, uneLigne.length());
        } catch (IOException ex) {
        } finally {
            if (writer != null) {
                try {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                } catch (IOException ex) {
                    throw new ExFileException(ex.getMessage());
                }
            }
        }
    }

    /**
     *
     * @param adresse_fichier
     * @param uneLigne
     * @throws IOException
     * @throws ExFileException
     */
    public void overwriteFile(String adresse_fichier, String uneLigne) throws IOException, ExFileException {
        FileWriter writer = null;

        try {
            writer = new FileWriter(adresse_fichier, false); //true pour NE PAS ajouter au fichier (ecraser)
            writer.write(uneLigne, 0, uneLigne.length());
        } catch (IOException ex) {
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException ex) {
                    throw new ExFileException(ex.getMessage());
                }
            }
        }
    }
    
    public void overwriteWholeExistingFile(String adresse_fichier, String texte) throws IOException, ExFileException {
        FileWriter writer = null;
        BufferedWriter bufferedWriter = null;
        //Création du fichier

            java.io.File fichier = new java.io.File(adresse_fichier); 
            if(fichier.exists()){ //s'il existe, on supprime pour le recréer
                fichier.delete();
            }
            fichier.createNewFile(); // Cette fonction doit être appelée au sein d'un bloc TRY 
        
        
        try {
            writer = new FileWriter(adresse_fichier, true); //true pour NE PAS ajouter au fichier (ecraser)
            //writer.write(uneLigne, 0, uneLigne.length());
            bufferedWriter = new BufferedWriter(writer);
            bufferedWriter.write(texte);
            bufferedWriter.newLine();
        } catch (IOException ex) {
        } finally {
            if (writer != null) {
                try {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                } catch (IOException ex) {
                    throw new ExFileException(ex.getMessage());
                }
            }
        }
    }
    
    public void overwriteWholeFile(String adresse_fichier, String texte) throws IOException, ExFileException {
        FileWriter writer = null;
        //Création du fichier

            java.io.File fichier = new java.io.File(adresse_fichier); 
            if(fichier.exists()){ //s'il existe, on supprime pour le recréer
                fichier.delete();
            }
            fichier.createNewFile(); // Cette fonction doit être appelée au sein d'un bloc TRY 
        
        
        try {
            writer = new FileWriter(adresse_fichier, true); //true pour NE PAS ajouter au fichier (ecraser)
            //writer.write(uneLigne, 0, uneLigne.length());
            writer.write(texte);
            
            writer.close();
        } catch (IOException ex) {
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException ex) {
                    throw new ExFileException(ex.getMessage());
                }
            }
        }
    }
}
